﻿using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.Linq;
using System.Text;
using System.Windows.Media;
using Microsoft.VisualStudio.Text.Classification;
using Microsoft.VisualStudio.Utilities;

namespace PowerGuiVsx.Exports
{

    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "PowerShellKeyword")]
    [Name("PowerShellKeyword")]
    [UserVisible(true)]
    [Order(Before = Priority.Default)]
    class PowerShellKeyword : ClassificationFormatDefinition
    {
        public PowerShellKeyword()
        {
            DisplayName = "PowerShell Keyword";
            BackgroundColor = Colors.White;
            ForegroundColor = Colors.Blue;
        }
    }

    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "PowerShellCmdlet")]
    [Name("PowerShellCmdlet")]
    [UserVisible(true)]
    [Order(Before = Priority.Default)]
    class PowerShellCmdlet : ClassificationFormatDefinition
    {
        public PowerShellCmdlet()
        {
            DisplayName = "PowerShell Cmdlet";
            BackgroundColor = Colors.White;
            ForegroundColor = Colors.CadetBlue;
        }
    }

    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "PowerShellVariable")]
    [Name("PowerShellVariable")]
    [UserVisible(true)]
    [Order(Before = Priority.Default)]
    class PowerShellVariable : ClassificationFormatDefinition
    {
        public PowerShellVariable()
        {
            DisplayName = "PowerShell Variable";
            BackgroundColor = Colors.White;
            ForegroundColor = Colors.Purple;
        }
    }


    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "PowerShellOperator")]
    [Name("PowerShellOperator")]
    [UserVisible(true)]
    [Order(Before = Priority.Default)]
    class PowerShellOperator : ClassificationFormatDefinition
    {
        public PowerShellOperator()
        {
            DisplayName = "PowerShell Operator";
            BackgroundColor = Colors.White;
            ForegroundColor = Colors.Red;
        }
    }

    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "PowerShellStaticClass")]
    [Name("PowerShellStaticClass")]
    [UserVisible(true)]
    [Order(Before = Priority.Default)]
    class PowerShellStaticClass : ClassificationFormatDefinition
    {
        public PowerShellStaticClass()
        {
            DisplayName = "PowerShell .NET Static Class";
            BackgroundColor = Colors.White;
            ForegroundColor = Colors.Teal;
        }
    }

    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "PowerShellStaticMethod")]
    [Name("PowerShellStaticMethod")]
    [UserVisible(true)]
    [Order(Before = Priority.Default)]
    class PowerShellStaticMethod : ClassificationFormatDefinition
    {
        public PowerShellStaticMethod()
        {
            DisplayName = "PowerShell .NET Static Method";
            BackgroundColor = Colors.White;
            ForegroundColor = Colors.SaddleBrown;
        }
    }


    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "PowerShellCmdletParameter")]
    [Name("PowerShellCmdletParameter")]
    [UserVisible(true)]
    [Order(Before = Priority.Default)]
    class PowerShellCmdletParameter : ClassificationFormatDefinition
    {
        public PowerShellCmdletParameter()
        {
            DisplayName = "PowerShell Cmdlet Parameter";
            BackgroundColor = Colors.White;
            ForegroundColor = Colors.CadetBlue;
        }
    }

    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "PowerShellNumber")]
    [Name("PowerShellNumber")]
    [UserVisible(true)]
    [Order(Before = Priority.Default)]
    class PowerShellNumber : ClassificationFormatDefinition
    {
        public PowerShellNumber()
        {
            DisplayName = "PowerShell Number";
            BackgroundColor = Colors.White;
            ForegroundColor = Colors.Black;
        }
    }

    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "PowerShellString")]
    [Name("PowerShellString")]
    [UserVisible(true)]
    [Order(Before = Priority.Default)]
    class PowerShellString : ClassificationFormatDefinition
    {
        public PowerShellString()
        {
            DisplayName = "PowerShell String";
            BackgroundColor = Colors.White;
            ForegroundColor = Colors.Maroon;
        }
    }

    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "PowerShellComment")]
    [Name("PowerShellComment")]
    [UserVisible(true)]
    [Order(Before = Priority.Default)]
    class PowerShellComment : ClassificationFormatDefinition
    {
        public PowerShellComment()
        {
            DisplayName = "PowerShell Comment";
            BackgroundColor = Colors.White;
            ForegroundColor = Colors.Green;
        }
    }

    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "PowerShellAutoVar")]
    [Name("PowerShellAutoVar")]
    [UserVisible(true)]
    [Order(Before = Priority.Default)]
    class PowerShellAutoVar : ClassificationFormatDefinition
    {
        public PowerShellAutoVar()
        {
            DisplayName = "PowerShell Automatic Variable";
            BackgroundColor = Colors.White;
            ForegroundColor = Colors.Navy;
        }
    }

    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "PowerShellFunction")]
    [Name("PowerShellFunction")]
    [UserVisible(true)]
    [Order(Before = Priority.Default)]
    class PowerShellFunction : ClassificationFormatDefinition
    {
        public PowerShellFunction()
        {
            DisplayName = "PowerShell Function";
            BackgroundColor = Colors.White;
            ForegroundColor = Colors.Navy;
        }
    }


    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "PowerShellDefault")]
    [Name("PowerShellDefault")]
    [UserVisible(true)]
    [Order(Before = Priority.High)]
    class PowerShellDefault : ClassificationFormatDefinition
    {
        public PowerShellDefault()
        {
            DisplayName = "PowerShell Default Text";
            BackgroundColor = Colors.White;
            ForegroundColor = Colors.Black;
        }
    }
}
